function move(ele,options,fn,t=50){
    // fn 是个函数  运动结束以后才被调用 
    // 又被称为 回调函数  

    
    // 比上一次多一步 对options 进行遍历 
    // 拿出所有的键值对  
    // 键 是 效果类型  
    // 值 是 目标
    var count = 0; // 准备1个计数器  
    for(var k in options){
        // 每循环1次 开一个定时器  计数器+1
        count++;
        // k 是效果类型
        const type = k;  // 如果这里是var 全局 
        // var 允许重名的 后边会把前面的覆盖掉  会发现多个效果只执行了最后一个
        // options[k] 目标值
        let target = options[k];

        if(type == 'opacity'){
            target *= 100;
        }
        var timer = setInterval(()=>{
            let current;
            if(type=='opacity'){
                // 获取值  如果是 opacity 乘以100 
                current = window.getComputedStyle(ele)[type] * 100
            }else{
                current = parseInt(window.getComputedStyle(ele)[type]);
            }
            // 每次变化的  (目标-元素新的位置)  /  10
            var duration = (target-current)/10;
            duration = duration>0?Math.ceil(duration):Math.floor(duration)
            if(current == target){
                clearInterval(timer)
                // console.log('结束了');
                // 每关闭一个定时器  计数器-1
                count--;

                if(count ===0) fn();
                // 函数调用的时候加() 
            }
            else{
            if(type == 'opacity'){
                // 如果是opacity 除以100以后 赋值  
                // 元素 只接受  [0,1] 
                ele.style[type] = (current+duration)/100;
            }else{
                ele.style[type] = current+duration + 'px';
            }
                
            }
            
        },t)


    }
   
}
